#ifndef PBL_H_
#define PBL_H_

class PBL {
private:
    // 每分钟节拍
    int beatPerMin = 60;
public:
    // 按键 端口 [GENERAL_PORT] 是否按下？
    bool compareButtonStatus(int digitalPin);
    // 限位开关 端口 [GENERAL_PORT] 是否检测到物体？
    bool compareLimitSwitchDetectObject(int digitalPin);
    // 人体热释 端口 [GENERAL_PORT] 是否检测到人？
    bool compareHumanThermolysisDetectHuman(int digitalPin);
    // 1路触摸 端口 [GENERAL_PORT] 是否按下？
    bool compareOneWayTouchStatus(int digitalPin);
    // 获取超声波 端口 [GENERAL_PORT] 的值（cm）
    int getUltrasonicValue(int digitalPin, int analogPin);
    // 获取滑动电阻 端口 [SPECIFIC_PORT] 的值
    int getSlidingResistanceValue(int analogPin);
    // 获取土壤湿度 端口 [SPECIFIC_PORT] 的值
    int getSoilMoistureValue(int analogPin);
    // 获取光照强度 端口 [SPECIFIC_PORT] 的值
    int getLightIntensityValue(int analogPin);
    // 获取麦克风 端口 [SPECIFIC_PORT] 的值
    int getMicrophoneValue(int analogPin);
    // 获取循迹 端口 [SPECIFIC_PORT] 的值
    int getTrackingValue(int analogPin);
    // 振动马达 端口 [SPECIFIC_PORT] 功率 [VIBRATION_INTENSITY]
    void setVibrationIntensity(int digitalPin, int vibrationIntensity);
    // 直流电机 端口 [SPECIFIC_PORT] 功率 [DCMOTOR_SPEED]
    void setDCMoterSpeed(int digitalPin, int analogPin, int dcmotorSpeed);
    // 每分钟 [BEATS] 节拍
    void setBeatsPerMinute(int beats);
    // 蜂鸣器 端口 [SPECIFIC_PORT] 播放音符 [NOTES]
    void setBuzzerNote(int digitalPin, int notes);
    // 蜂鸣器 端口 [SPECIFIC_PORT] 播放音符 [NOTES] 节拍 [BEAT_NUMBERS]
    void setBuzzerNoteBeat(int digitalPin, int notes, int beatNumebrs);
    // 蜂鸣器 端口 [SPECIFIC_PORT] 休止
    void setBuzzerRest(int digitalPin);
    // 蜂鸣器 端口 [SPECIFIC_PORT] 休止节拍 [BEAT_NUMBERS]
    void setBuzzerRestBeat(int digitalPin, int beatNumebrs);
    // 红 [RED] 绿 [GREEN] 蓝 [BLUE]
    long getRGB(int red, int green, int blue);
    // 多态，红 [RED] 绿 [GREEN] 蓝 [BLUE]
    long getRGB(String red, String green, String blue);
};

#endif